/**
 *====================================================
 * 文件名称: FinanceProcessEntity.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年10月23日			chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.entity;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import com.yuexunit.finance.project.entity.lexicon.BusinessTypeEnum;
import com.yuexunit.finance.project.entity.lexicon.OperatorRoleEnum;
import com.yuexunit.finance.project.entity.lexicon.ProcessSegmentEnum;
import com.yuexunit.finance.project.entity.lexicon.ProcessTypeEnum;

/**
 * @ClassName: FinanceProcessEntity
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2015年10月23日 下午12:58:53
 */
@Entity
@Table(name = "FIN_FINANCE_PROCESS")
public class FinanceProcessEntity {

	/** 融资进度ID */
	@Id
	@GeneratedValue
	@Column(name = "PROCESS_ID")
	private Long processId;

	/** 融资信息ID */
	@Column(name = "FINANCE_ID")
	private Long financeId;

	/** 融资信息编号 */
	@Column(name = "FINANCE_NUMBER")
	private String financeNumber;

	/** 进度类型 0:未知/1:融资申请/2:收货放款/3:收款放货/4:融资完成 */
	@Column(name = "PROCESS_TYPE")
	private ProcessTypeEnum processType;

	/** 进度类型细分 0:未知/1:申请/2:审核/3:合同/4:发货/5:收货/6:质押/7:放款/8:运送/9:到港/10:提货/11:解除/12:终结/13:评价 */
	@Column(name = "PROCESS_SEGMENT")
	private ProcessSegmentEnum processSegment;

	/** 节点 */
	@Column(name = "SEGMENT")
	private String segment;

	/** 业务类型 0:未知/1:融资信息/2:融资评审/3:融资合同/4:监管合同/5:监管通知/6:发货通知/7:理货信息/8:放款通知/9:运输通知单/10:提货申请/11:收款通知/12:放货通知/13:配送信息/14:融资评价/15:货箱信息/16:监管确认书/17:监管解除 */
	@Column(name = "BUSINESS_TYPE")
	private BusinessTypeEnum businessType;

	/** 业务信息ID */
	@Column(name = "BUSINESS_ID")
	private Long businessId;

	/** 业务凭证 */
	@Column(name = "BUSINESS_VOUCHER")
	private String businessVoucher;

	/** 业务信息描述-进度跟踪 */
	@Column(name = "DESCRIPTION")
	private String description;

	/** 业务操作角色 0:未知/1:平台/2:物流/3:企业 */
	@Column(name = "OPERATOR_ROLE")
	private OperatorRoleEnum operatorRole;

	/** 业务操作人员ID */
	@Column(name = "OPERATOR_ID")
	private Long operatorId;

	/** 业务操作人员 */
	@Column(name = "OPERATOR")
	private String operator;

	/** 数据区域 */
	@Column(name = "EXPAND")
	private String expand;

	/** 收货城市 */
	@Column(name = "RECEIVE_CITY")
	private String receiveCity;

	/** 发货城市 */
	@Column(name = "DELIVER_CITY")
	private String deliverCity;

	/** 放款金额 */
	@Column(name = "LOAN")
	private BigDecimal loan;
	
	/** 已放款金额 */
	@Column(name = "LOAN_ALREADY")
	private BigDecimal loanAlready;

	/** 收货数量 */
	@Column(name = "RECIEVE")
	private BigDecimal recieve;

	/** 监管数量 */
	@Column(name = "SUPERVISION")
	private BigDecimal supervision;

	/** 运输数量 */
	@Column(name = "TRANSPORT")
	private BigDecimal transport;

	/** 到港数量 */
	@Column(name = "ARRIVE")
	private BigDecimal arrive;

	/** 提货数量 */
	@Column(name = "PICKUP")
	private BigDecimal pickup;

	/** 已提数量(已签收) */
	@Column(name = "SIGN")
	private BigDecimal sign;

	/** 解除监管 */
	@Column(name = "RELIEVE")
	private BigDecimal relieve;

	/** 异常数量 */
	@Column(name = "ABNORMAL")
	private BigDecimal abnormal;

	/** 可提数量 */
	@Column(name = "PICKUPABLE")
	private BigDecimal pickupable;

	/** 重量 */
	@Column(name = "WEIGHT")
	private BigDecimal weight;

	/** 体积 */
	@Column(name = "VOLUME")
	private BigDecimal volume;

	/** 创建时间 */
	@Column(name = "CREATE_DT")
	private Date createDatetime;

	private transient FinanceProcessEntity parentProcess;

	private transient FinanceProcessDetailEntity currentDetail;

	private transient List<FinanceProcessDetailEntity> currentDetails;

	public Long getProcessId() {
		return processId;
	}

	public void setProcessId(Long processId) {
		this.processId = processId;
	}

	public Long getFinanceId() {
		return financeId;
	}

	public void setFinanceId(Long financeId) {
		this.financeId = financeId;
	}

	public String getFinanceNumber() {
		return financeNumber;
	}

	public void setFinanceNumber(String financeNumber) {
		this.financeNumber = financeNumber;
	}

	public ProcessTypeEnum getProcessType() {
		return processType;
	}

	public void setProcessType(ProcessTypeEnum processType) {
		this.processType = processType;
	}

	public ProcessSegmentEnum getProcessSegment() {
		return processSegment;
	}

	public void setProcessSegment(ProcessSegmentEnum processSegment) {
		this.processSegment = processSegment;
	}

	public String getSegment() {
		return segment;
	}

	public void setSegment(String segment) {
		this.segment = segment;
	}

	public BusinessTypeEnum getBusinessType() {
		return businessType;
	}

	public void setBusinessType(BusinessTypeEnum businessType) {
		this.businessType = businessType;
	}

	public Long getBusinessId() {
		return businessId;
	}

	public void setBusinessId(Long businessId) {
		this.businessId = businessId;
	}

	public String getBusinessVoucher() {
		return businessVoucher;
	}

	public void setBusinessVoucher(String businessVoucher) {
		this.businessVoucher = businessVoucher;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public OperatorRoleEnum getOperatorRole() {
		return operatorRole;
	}

	public void setOperatorRole(OperatorRoleEnum operatorRole) {
		this.operatorRole = operatorRole;
	}

	public Long getOperatorId() {
		return operatorId;
	}

	public void setOperatorId(Long operatorId) {
		this.operatorId = operatorId;
	}

	public String getOperator() {
		return operator;
	}

	public void setOperator(String operator) {
		this.operator = operator;
	}

	public String getExpand() {
		return expand;
	}

	public void setExpand(String expand) {
		this.expand = expand;
	}

	public String getReceiveCity() {
		return receiveCity;
	}

	public void setReceiveCity(String receiveCity) {
		this.receiveCity = receiveCity;
	}

	public String getDeliverCity() {
		return deliverCity;
	}

	public void setDeliverCity(String deliverCity) {
		this.deliverCity = deliverCity;
	}

	public BigDecimal getLoan() {
		return loan;
	}

	public void setLoan(BigDecimal loan) {
		this.loan = loan;
	}

	public BigDecimal getLoanAlready() {
		return loanAlready;
	}

	public void setLoanAlready(BigDecimal loanAlready) {
		this.loanAlready = loanAlready;
	}

	public BigDecimal getRecieve() {
		return recieve;
	}

	public void setRecieve(BigDecimal recieve) {
		this.recieve = recieve;
	}

	public BigDecimal getSupervision() {
		return supervision;
	}

	public void setSupervision(BigDecimal supervision) {
		this.supervision = supervision;
	}

	public BigDecimal getTransport() {
		return transport;
	}

	public void setTransport(BigDecimal transport) {
		this.transport = transport;
	}

	public BigDecimal getArrive() {
		return arrive;
	}

	public void setArrive(BigDecimal arrive) {
		this.arrive = arrive;
	}

	public BigDecimal getPickup() {
		return pickup;
	}

	public void setPickup(BigDecimal pickup) {
		this.pickup = pickup;
	}

	public BigDecimal getSign() {
		return sign;
	}

	public void setSign(BigDecimal sign) {
		this.sign = sign;
	}

	public BigDecimal getRelieve() {
		return relieve;
	}

	public void setRelieve(BigDecimal relieve) {
		this.relieve = relieve;
	}

	public BigDecimal getAbnormal() {
		return abnormal;
	}

	public void setAbnormal(BigDecimal abnormal) {
		this.abnormal = abnormal;
	}

	public BigDecimal getPickupable() {
		return pickupable;
	}

	public void setPickupable(BigDecimal pickupable) {
		this.pickupable = pickupable;
	}

	public BigDecimal getWeight() {
		return weight;
	}

	public void setWeight(BigDecimal weight) {
		this.weight = weight;
	}

	public BigDecimal getVolume() {
		return volume;
	}

	public void setVolume(BigDecimal volume) {
		this.volume = volume;
	}

	public Date getCreateDatetime() {
		return createDatetime;
	}

	public void setCreateDatetime(Date createDatetime) {
		this.createDatetime = createDatetime;
	}

	public FinanceProcessEntity getParentProcess() {
		return parentProcess;
	}

	public void setParentProcess(FinanceProcessEntity parentProcess) {
		this.parentProcess = parentProcess;
	}

	public FinanceProcessDetailEntity getCurrentDetail() {
		return currentDetail;
	}

	public void setCurrentDetail(FinanceProcessDetailEntity currentDetail) {
		this.currentDetail = currentDetail;
	}

	public List<FinanceProcessDetailEntity> getCurrentDetails() {
		return currentDetails;
	}

	public void setCurrentDetails(List<FinanceProcessDetailEntity> currentDetails) {
		this.currentDetails = currentDetails;
	}
}
